#ifndef __SEM_HPP__
#define __SEM_HPP__

#include <semaphore.h>

const int g_sem_num=10;

class Sem
{
public:
    Sem(int num=g_sem_num)
        :_num(num)
    {
        sem_init(&_sem,0,_num);
    }

    void p()
    {
        sem_wait(&_sem);
    }

    void v()
    {
        sem_post(&_sem);
    }

    ~Sem()
    {
        sem_destroy(&_sem);
    }
private:
    sem_t _sem;
    int _num;
};

#endif